JU
action

TalkActions e Websites

Por julhinhuu, 23 de jan. de 2016 em Scripts

talk
website
resolvido
script
27
3.7k
julhinhuuJ
26 de janeiro de 2016 às 14:08

 

Eu ainda não compreendi mt bem como funciona esse tfs 1.2... Mas recebi um auxilio, aqui.

 

Testa agr:

local pointObj = 2160 --id do item "points"

function getAccountPoints(cid)
  local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid(cid)..'')
  if(res:getID() == -1) then
     return false
  end
  local ret = res:getDataInt("premium_points")
  res:free()
  return tonumber(ret)
end

function onSay(cid, words, param)
	if param ~= "" then
		if tonumber(param) <= getAccountPoints(cid) then
			player:addItem(cid, pointObj, param)
			db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - param..' WHERE id='.. player:getGuid(cid)..'')
			newPoints = getAccountPoints(cid)
			player:sendCancel(cid, 22, 'Você ainda possui '..newPoints..' premium points em sua conta.')
		else
			player:sendCancel(cid, "Você não tem tantos premium points assim.")
		end
	else
		player:sendCancel(cid, "Você precisa especificar um valor.")
	end
return true
end

Caso não dê certo, tenta assim:

local pointObj = 2160 --id do item "points"

function getAccountPoints(cid)
  local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid(cid)..'')
  if(res:getID() == -1) then
     return false
  end
  local ret = res:getDataInt("premium_points")
  res:free()
  return tonumber(ret)
end

function onSay(cid, words, param)
	if param ~= "" then
		if tonumber(param) <= player:getAccountPoints(cid) then
			player:addItem(cid, pointObj, param)
			db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints(cid) - param..' WHERE id='.. player:getGuid(cid)..'')
			newPoints = player:getAccountPoints(cid)
			player:sendCancel(cid, 22, 'Você ainda possui '..newPoints..' premium points em sua conta.')
		else
			player:sendCancel(cid, "Você não tem tantos premium points assim.")
		end
	else
		player:sendCancel(cid, "Você precisa especificar um valor.")
	end
return true
end

 

Mesmo erro que acabei de postar acima Dani. 'RS', se sua tentativas estão dando erro imagina as minhas. 'RSRS'

 

 

Vlw Dani, quem estava fazendo errado era eu... Desculpa e muito obrigado mesmo. Te amo <3 HAHA

DanihcvD
26 de janeiro de 2016 às 17:10

@, que nada. ^^ sauhsauhsa


Tópico movido para dúvidas / pedidos resolvidos.

DanihcvD
30 de janeiro de 2016 às 18:06
Melhor resposta

Por distração, eu acabei me esquecendo que vc queria 3 talkactions. Por isso, aqui está o script final com as 3 talkactions:

*lembrando que ñ tenho como testar, e estou me baseando no q me foi dito sobre o tfs 1.2:

local pointObj = 2160 --id do item "points"

function getAccountPoints(player)
  local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid()..'')
  if(res:getID() == -1) then
     return false
  end
  local ret = res:getDataInt("premium_points")
  res:free()
  return tonumber(ret)
end

function onSay(player, words, param)
    if (words == '!sacar') then
        if param ~= "" then
            if tonumber(param) ~= nil then
                if 0 >= tonumber(param) then
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser acima de zero.")
                elseif tonumber(param) <= player:getAccountPoints() then
                player:addItem(pointObj, param)
                db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() - param..' WHERE id='.. player:getGuid()..'')
                newPoints = player:getAccountPoints()
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.')
                else
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.")
                end
            else
            player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser um numero.")
            end
        else
        player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.")
        end
    elseif (words == '!saldo') then
    player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..player:getAccountPoints()..' Premium points.')
    elseif (words == '!depositar') then
        if param ~= "" then
            if tonumber(param) ~= nil then
                if 0 >= tonumber(param) then
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser acima de zero.")
                elseif tonumber(param) <= player:getItemCount(pointObj) then
                player:removeItem(pointObj, tonumber(param))
                db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() + tonumber(param)..' WHERE id='.. player:getGuid()..'')
                newPoints = player:getAccountPoints()
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.')
                else
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.")
                end
            else
            player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser um numero.")
            end
        else
        player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.")
        end
    end
return true
end

Basta usar uma tag em talkactions.xml apenas se atente a isso na tag:

words="!sacar;!saldo;!depositar"

 

Editado Janeiro 30 por Danihcv

bugs corrigidos

julhinhuuJ
30 de janeiro de 2016 às 18:08

Por distração, eu acabei me esquecendo que vc queria 3 talkactions. Por isso, aqui está o script final com as 3 talkactions:

*lembrando que ñ tenho como testar, e estou me baseando no q me foi dito sobre o tfs 1.2:

local pointObj = 2160 --id do item "points"

function getAccountPoints(player)
  local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid()..'')
  if(res:getID() == -1) then
     return false
  end
  local ret = res:getDataInt("premium_points")
  res:free()
  return tonumber(ret)
end

function onSay(player, words, param)
if (words == '!sacar') then
	if param ~= "" then
		if tonumber(param) <= player:getAccountPoints() then
			player:addItem(pointObj, param)
			db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() - param..' WHERE id='.. player:getGuid()..'')
			newPoints = player:getAccountPoints()
			player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.')
		else
			player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.")
		end
	else
	player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.")
	end
elseif (words == '!saldo') then
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..player:getAccountPoints()..' Premium points.')
elseif (words == '!depositar') then
	if param ~= "" then
		if tonumber(param) <= player:getItemCount(pointObj) then
		player:removeItem(pointObj, tonumber(param))
		db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() + tonumber(param)..' WHERE id='.. player:getGuid()..'')
		newPoints = player:getAccountPoints()
		player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.')
		else
		player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.")
		end
	else
	player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.")
	end
end
return true
end
Basta usar uma tag em talkactions.xml apenas se atente a isso na tag:

 

Eu fiz Dani, por isso que não pedi as outras... obrigado irmão te amo de novo hahaha <3

DanihcvD
30 de janeiro de 2016 às 20:08

@, tranquilo então. ^^
sahusahuas


#EDIT: Editei meu post anterior com o script para acrescentar a nova versão do script, sem bug algum.

1 mês depois...
DuhisbackD
22 de fevereiro de 2016 às 13:18

@, tranquilo então. ^^

sahusahuas

#EDIT: Editei meu post anterior com o script para acrescentar a nova versão do script, sem bug algum.

 

Olá amigo boua tarde pequei esse seu script fiz tudo certinho na hora que fui olhar o saldo ai deu esse erro

 

Usei o comando "!saldo"

[22/02/2016 13:10:13] [Error - TalkAction Interface]
[22/02/2016 13:10:13] data/talkactions/scripts/buypoints.lua:onSay
[22/02/2016 13:10:13] Description:
[22/02/2016 13:10:13] data/talkactions/scripts/buypoints.lua:34: attempt to index local 'player' (a number value)
[22/02/2016 13:10:13] stack traceback:
[22/02/2016 13:10:13]     data/talkactions/scripts/buypoints.lua:34: in function <data/talkactions/scripts/buypoints.lua:13>

Usei o comando "!sacar 10"

[22/02/2016 13:14:28] [Error - TalkAction Interface]
[22/02/2016 13:14:28] data/talkactions/scripts/buypoints.lua:onSay
[22/02/2016 13:14:28] Description:
[22/02/2016 13:14:28] data/talkactions/scripts/buypoints.lua:19: attempt to index local 'player' (a number value)
[22/02/2016 13:14:28] stack traceback:
[22/02/2016 13:14:28]     data/talkactions/scripts/buypoints.lua:19: in function <data/talkactions/scripts/buypoints.lua:13>

Usei o comando "!depositar 10"

 

[22/02/2016 13:17:53] [Error - TalkAction Interface]
[22/02/2016 13:17:53] data/talkactions/scripts/buypoints.lua:onSay
[22/02/2016 13:17:53] Description:
[22/02/2016 13:17:53] data/talkactions/scripts/buypoints.lua:40: attempt to index local 'player' (a number value)
[22/02/2016 13:17:53] stack traceback:
[22/02/2016 13:17:54]     data/talkactions/scripts/buypoints.lua:40: in function <data/talkactions/scripts/buypoints.lua:13>

 

Obs: a tag em talkactions.xml ficou assim

<!-- Retirar points do site para o jogo -->
<talkaction words="!sacar;!saldo;!depositar" event="script" value="buypoints.lua"/>

eskh8n.png

 

tá ai a imagem lá no phpmyadmin

Obs: uso site

Editado Fevereiro 22 por Eduzinhonho

DanihcvD
22 de fevereiro de 2016 às 15:00

@@Eduzinhonho, qual distro vc usa?

DuhisbackD
22 de fevereiro de 2016 às 19:36

@@Eduzinhonho, qual distro vc usa?

 

Pokemon Dash Advanced (1.0)

 

1.0

 

DanihcvD
22 de fevereiro de 2016 às 22:03

@@Eduzinhonho, putz cara... Não manjo dessa distro... Mas pode ser que o script dessa forma aqui funcione pra vc:

local pointObj = 2160 --id do item "points"

function getAccountPoints(cid)
local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..getPlayerAccountId(cid)..'')
  if(res:getID() == -1) then
     return false
  end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end

function onSay(cid, words, param)
	if (words == '!sacar') then
		if param ~= "" then
			if tonumber(param) ~= nil then
				if 0 >= tonumber(param) then
				doPlayerSendCancel(cid, "O valor precisa ser acima de zero.")
				elseif 0 < tonumber(param) and tonumber(param) <= getAccountPoints(cid) then
				doPlayerAddItem(cid, pointObj, tonumber(param))
				db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'')
				newPoints = getAccountPoints(cid)
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.')
				else
				doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
				end
			else
			doPlayerSendCancel(cid, "O valor precisa ser um numero.")
			end
		else
		doPlayerSendCancel(cid, "Você precisa especificar um valor.")
		end
	elseif (words == '!saldo') then
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..getAccountPoints(cid)..' Premium points.')
	elseif (words == '!depositar') then
		if param ~= "" then
			if tonumber(param) ~= nil then
				if 0 >= tonumber(param) then
				doPlayerSendCancel(cid, "O valor precisa ser acima de zero.")
				elseif 0 < tonumber(param) and tonumber(param) <= getPlayerItemCount(cid, pointObj) then
				doPlayerRemoveItem(cid, pointObj, tonumber(param))
				db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) + tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'')
				newPoints = getAccountPoints(cid)
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.')
				else
				doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
				end
			else
			doPlayerSendCancel(cid, "O valor precisa ser um numero.")
			end
		else
		doPlayerSendCancel(cid, "Você precisa especificar um valor.")
		end
	end
return true
end
DuhisbackD
22 de fevereiro de 2016 às 22:48

 

@@Eduzinhonho, putz cara... Não manjo dessa distro... Mas pode ser que o script dessa forma aqui funcione pra vc:

local pointObj = 2160 --id do item "points"

function getAccountPoints(cid)
local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..getPlayerAccountId(cid)..'')
  if(res:getID() == -1) then
     return false
  end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end

function onSay(cid, words, param)
	if (words == '!sacar') then
		if param ~= "" then
			if tonumber(param) ~= nil then
				if 0 >= tonumber(param) then
				doPlayerSendCancel(cid, "O valor precisa ser acima de zero.")
				elseif 0 < tonumber(param) and tonumber(param) <= getAccountPoints(cid) then
				doPlayerAddItem(cid, pointObj, tonumber(param))
				db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'')
				newPoints = getAccountPoints(cid)
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.')
				else
				doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
				end
			else
			doPlayerSendCancel(cid, "O valor precisa ser um numero.")
			end
		else
		doPlayerSendCancel(cid, "Você precisa especificar um valor.")
		end
	elseif (words == '!saldo') then
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..getAccountPoints(cid)..' Premium points.')
	elseif (words == '!depositar') then
		if param ~= "" then
			if tonumber(param) ~= nil then
				if 0 >= tonumber(param) then
				doPlayerSendCancel(cid, "O valor precisa ser acima de zero.")
				elseif 0 < tonumber(param) and tonumber(param) <= getPlayerItemCount(cid, pointObj) then
				doPlayerRemoveItem(cid, pointObj, tonumber(param))
				db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) + tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'')
				newPoints = getAccountPoints(cid)
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.')
				else
				doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
				end
			else
			doPlayerSendCancel(cid, "O valor precisa ser um numero.")
			end
		else
		doPlayerSendCancel(cid, "Você precisa especificar um valor.")
		end
	end
return true
end

 

Fucionou sim cara muito obrigado funcionou bastante certo PARABÈNS

 

2yucys8.png

 

se poder min ajudar visita esse outro post que eu fiz lá eu estou com outro problema sobre um script da bike só ler os comentarios que você fica informado e talvez até min ajudará se poder

 

Clique Aqui

 

Muito obrigado por ter ajudado nesse problema

DanihcvD
22 de fevereiro de 2016 às 22:56

@@Eduzinhonho, disponha. ^^

Se eu souber o que fazer, eu respondo lá. sahuahusa

DuhisbackD
22 de fevereiro de 2016 às 23:09

@@Eduzinhonho, disponha. ^^

 

Se eu souber o que fazer, eu respondo lá. sahuahusa

 

Tranquilo muito obrigado da uma olhada lá no ultimo post que eu atualizei ele está mais fácil de entender e Obrigado.